package com.huluobo.a2206douyindemo.utils;

import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.huluobo.a2206douyindemo.R;

/**
 * Created by LC on 2024/8/16.
 */
public class ImageUtils {
    private static ImageUtils imageUtils;

    private ImageUtils() {
    }

    public static ImageUtils getInstance() {
        if (imageUtils == null) {
            synchronized (ImageUtils.class) {
                if (imageUtils == null) {
                    imageUtils = new ImageUtils();
                }
            }
        }
        return imageUtils;
    }

    /**
     * 加载图片图片
     *
     * @param context   上下文
     * @param url       图片地址
     * @param imageView 对应的图片控件
     */
    public void loadImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)//全局使用磁盘缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来的时候,会优先显示占位图
                .error(R.drawable.baseline_error_24)//当图片无法加载的时候,会显示错误图
                .transform(new CenterCrop())//使用图片拉伸,从中心开始拉伸整张图片
                .into(imageView);
    }

    /**
     * 加载圆形图片
     *
     * @param context   上下文
     * @param url       地址
     * @param imageView 控件
     */
    public void loadCircleImage(Context context, String url, ImageView imageView) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)//全局使用磁盘缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来的时候,会优先显示占位图
                .error(R.drawable.baseline_error_24)//当图片无法加载的时候,会显示错误图
                .transform(new CenterCrop(), new CircleCrop())//使用图片拉伸,从中心开始拉伸整张图片 ,+圆形裁剪
                .into(imageView);
    }

    public void loadRoundImage(Context context, String url, ImageView imageView, int radius) {
        Glide.with(context)
                .load(url)
                .skipMemoryCache(true)//跳过内存缓存
                .diskCacheStrategy(DiskCacheStrategy.ALL)//全局使用磁盘缓存
                .placeholder(new ColorDrawable(Color.GRAY))//占位图,当图片没有加载出来的时候,会优先显示占位图
                .error(R.drawable.baseline_error_24)//当图片无法加载的时候,会显示错误图
                .transform(new CenterCrop(), new RoundedCorners(radius))//使用图片拉伸,从中心开始拉伸整张图片 ,+圆角裁剪
                .into(imageView);
    }
}
